home *** CD-ROM | disk | FTP | other *** search
/ Aminet 6 / Aminet 6 - June 1995.iso / Aminet / util / blank / bserver_v14.lha / BServer_v1.4 / Sources.lha / Sources / clients / Plasma.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-03-23  |  28.4 KB  |  903 lines

  1. ;/*
  2. sc RESOPT DATA=NEAR UCHAR CONSTLIB STREQ NMINC STRMERGE NOSTKCHK NOSTDIO OPTIMIZE OPTSIZE IGNORE=73 Plasma.c
  3. slink from LIB:c.o Plasma.o to //Clients/Plasma LIB LIB:sc.lib LIB:amiga.lib /lib/client.lib SC SD NOICONS
  4. delete Plasma.o
  5. quit
  6.  
  7.  Plasma 1.0  (Client for BServer)
  8.  
  9.  Copyright © 1994-1995 
  10.  Stefano Reksten and Luca Viola of 3AM - The Three Amigos!!!
  11.  All rights reserved.
  12. */
  13.  
  14. #include <exec/types.h>
  15. #include <exec/memory.h>
  16.  
  17. #include <stdio.h>
  18. #include <stdlib.h>
  19. #include <string.h>
  20. #include <signal.h>
  21. #include <time.h>
  22. #include <intuition/intuition.h>
  23. #include <graphics/gfx.h>
  24. #include <graphics/scale.h>
  25.  
  26. #include <proto/exec.h>
  27. #include <proto/intuition.h>
  28. #include <proto/graphics.h>
  29. #include <clib/alib_protos.h>
  30.  
  31. #include "/include/client.h"
  32.  
  33. char *ver = "$VER: Plasma 1.2 "__AMIGADATE__;
  34.  
  35. struct IntuitionBase *IntuitionBase;
  36. struct GfxBase *GfxBase;
  37. struct DisplayIDInformation *dinfo;
  38.  
  39. UBYTE plasmastd_cmap32[256][3] = {
  40.  {0x00,0x00,0x00}, {0x00,0x00,0xFF},
  41.  {0x00,0x00,0xFF}, {0x00,0x00,0xFF},
  42.  {0x00,0x00,0xFF}, {0x00,0x00,0xFF},
  43.  {0x00,0x11,0xEE}, {0x00,0x11,0xEE},
  44.  {0x00,0x11,0xEE}, {0x00,0x11,0xEE},
  45.  {0x00,0x11,0xEE}, {0x00,0x22,0xDD},
  46.  {0x00,0x22,0xDD}, {0x00,0x22,0xDD},
  47.  {0x00,0x22,0xDD}, {0x00,0x22,0xDD},
  48.  {0x00,0x22,0xCC}, {0x00,0x33,0xCC},
  49.  {0x00,0x33,0xCC}, {0x00,0x33,0xCC},
  50.  {0x00,0x33,0xCC}, {0x00,0x33,0xCC},
  51.  {0x00,0x44,0xBB}, {0x00,0x44,0xBB},
  52.  {0x00,0x44,0xBB}, {0x00,0x44,0xBB},
  53.  {0x00,0x44,0xBB}, {0x00,0x55,0xAA},
  54.  {0x00,0x55,0xAA}, {0x00,0x55,0xAA},
  55.  {0x00,0x55,0xAA}, {0x00,0x55,0xAA},
  56.  {0x00,0x55,0xAA}, {0x00,0x66,0x99},
  57.  {0x00,0x66,0x99}, {0x00,0x66,0x99},
  58.  {0x00,0x66,0x99}, {0x00,0x66,0x99},
  59.  {0x00,0x77,0x88}, {0x00,0x77,0x88},
  60.  {0x00,0x77,0x88}, {0x00,0x77,0x88},
  61.  {0x00,0x77,0x88}, {0x00,0x77,0x77},
  62.  {0x00,0x88,0x77}, {0x00,0x88,0x77},
  63.  {0x00,0x88,0x77}, {0x00,0x88,0x77},
  64.  {0x00,0x88,0x77}, {0x00,0x99,0x66},
  65.  {0x00,0x99,0x66}, {0x00,0x99,0x66},
  66.  {0x00,0x99,0x66}, {0x00,0x99,0x66},
  67.  {0x00,0xAA,0x55}, {0x00,0xAA,0x55},
  68.  {0x00,0xAA,0x55}, {0x00,0xAA,0x55},
  69.  {0x00,0xAA,0x55}, {0x00,0xAA,0x55},
  70.  {0x00,0xBB,0x44}, {0x00,0xBB,0x44},
  71.  {0x00,0xBB,0x44}, {0x00,0xBB,0x44},
  72.  {0x00,0xBB,0x44}, {0x00,0xCC,0x33},
  73.  {0x00,0xCC,0x33}, {0x00,0xCC,0x33},
  74.  {0x00,0xCC,0x33}, {0x00,0xCC,0x33},
  75.  {0x00,0xCC,0x22}, {0x00,0xDD,0x22},
  76.  {0x00,0xDD,0x22}, {0x00,0xDD,0x22},
  77.  {0x00,0xDD,0x22}, {0x00,0xDD,0x22},
  78.  {0x00,0xEE,0x11}, {0x00,0xEE,0x11},
  79.  {0x00,0xEE,0x11}, {0x00,0xEE,0x11},
  80.  {0x00,0xEE,0x11}, {0x00,0xFF,0x00},
  81.  {0x00,0xFF,0x00}, {0x00,0xFF,0x00},
  82.  {0x00,0xFF,0x00}, {0x00,0xFF,0x00},
  83.  {0x00,0xFF,0x00}, {0x00,0xFF,0x00},
  84.  {0x00,0xFF,0x00}, {0x00,0xFF,0x00},
  85.  {0x00,0xFF,0x00}, {0x11,0xEE,0x00},
  86.  {0x11,0xEE,0x00}, {0x11,0xEE,0x00},
  87.  {0x11,0xEE,0x00}, {0x11,0xEE,0x00},
  88.  {0x22,0xDD,0x00}, {0x22,0xDD,0x00},
  89.  {0x22,0xDD,0x00}, {0x22,0xDD,0x00},
  90.  {0x22,0xDD,0x00}, {0x22,0xCC,0x00},
  91.  {0x33,0xCC,0x00}, {0x33,0xCC,0x00},
  92.  {0x33,0xCC,0x00}, {0x33,0xCC,0x00},
  93.  {0x33,0xCC,0x00}, {0x44,0xBB,0x00},
  94.  {0x44,0xBB,0x00}, {0x44,0xBB,0x00},
  95.  {0x44,0xBB,0x00}, {0x44,0xBB,0x00},
  96.  {0x55,0xAA,0x00}, {0x55,0xAA,0x00},
  97.  {0x55,0xAA,0x00}, {0x55,0xAA,0x00},
  98.  {0x55,0xAA,0x00}, {0x55,0xAA,0x00},
  99.  {0x66,0x99,0x00}, {0x66,0x99,0x00},
  100.  {0x66,0x99,0x00}, {0x66,0x99,0x00},
  101.  {0x66,0x99,0x00}, {0x77,0x88,0x00},
  102.  {0x77,0x88,0x00}, {0x77,0x88,0x00},
  103.  {0x77,0x88,0x00}, {0x77,0x88,0x00},
  104.  {0x77,0x77,0x00}, {0x88,0x77,0x00},
  105.  {0x88,0x77,0x00}, {0x88,0x77,0x00},
  106.  {0x88,0x77,0x00}, {0x88,0x77,0x00},
  107.  {0x99,0x66,0x00}, {0x99,0x66,0x00},
  108.  {0x99,0x66,0x00}, {0x99,0x66,0x00},
  109.  {0x99,0x66,0x00}, {0xAA,0x55,0x00},
  110.  {0xAA,0x55,0x00}, {0xAA,0x55,0x00},
  111.  {0xAA,0x55,0x00}, {0xAA,0x55,0x00},
  112.  {0xAA,0x55,0x00}, {0xBB,0x44,0x00},
  113.  {0xBB,0x44,0x00}, {0xBB,0x44,0x00},
  114.  {0xBB,0x44,0x00}, {0xBB,0x44,0x00},
  115.  {0xCC,0x33,0x00}, {0xCC,0x33,0x00},
  116.  {0xCC,0x33,0x00}, {0xCC,0x33,0x00},
  117.  {0xCC,0x33,0x00}, {0xCC,0x22,0x00},
  118.  {0xDD,0x22,0x00}, {0xDD,0x22,0x00},
  119.  {0xDD,0x22,0x00}, {0xDD,0x22,0x00},
  120.  {0xDD,0x22,0x00}, {0xEE,0x11,0x00},
  121.  {0xEE,0x11,0x00}, {0xEE,0x11,0x00},
  122.  {0xEE,0x11,0x00}, {0xEE,0x11,0x00},
  123.  {0xFF,0x00,0x00}, {0xFF,0x00,0x00},
  124.  {0xFF,0x00,0x00}, {0xFF,0x00,0x00},
  125.  {0xFF,0x00,0x00}, {0xFF,0x00,0x00},
  126.  {0xFF,0x00,0x00}, {0xFF,0x00,0x00},
  127.  {0xFF,0x00,0x00}, {0xFF,0x00,0x00},
  128.  {0xEE,0x00,0x11}, {0xEE,0x00,0x11},
  129.  {0xEE,0x00,0x11}, {0xEE,0x00,0x11},
  130.  {0xEE,0x00,0x11}, {0xDD,0x00,0x22},
  131.  {0xDD,0x00,0x22}, {0xDD,0x00,0x22},
  132.  {0xDD,0x00,0x22}, {0xDD,0x00,0x22},
  133.  {0xCC,0x00,0x22}, {0xCC,0x00,0x33},
  134.  {0xCC,0x00,0x33}, {0xCC,0x00,0x33},
  135.  {0xCC,0x00,0x33}, {0xCC,0x00,0x33},
  136.  {0xBB,0x00,0x44}, {0xBB,0x00,0x44},
  137.  {0xBB,0x00,0x44}, {0xBB,0x00,0x44},
  138.  {0xBB,0x00,0x44}, {0xAA,0x00,0x55},
  139.  {0xAA,0x00,0x55}, {0xAA,0x00,0x55},
  140.  {0xAA,0x00,0x55}, {0xAA,0x00,0x55},
  141.  {0xAA,0x00,0x55}, {0x99,0x00,0x66},
  142.  {0x99,0x00,0x66}, {0x99,0x00,0x66},
  143.  {0x99,0x00,0x66}, {0x99,0x00,0x66},
  144.  {0x88,0x00,0x77}, {0x88,0x00,0x77},
  145.  {0x88,0x00,0x77}, {0x88,0x00,0x77},
  146.  {0x88,0x00,0x77}, {0x77,0x00,0x77},
  147.  {0x77,0x00,0x88}, {0x77,0x00,0x88},
  148.  {0x77,0x00,0x88}, {0x77,0x00,0x88},
  149.  {0x77,0x00,0x88}, {0x66,0x00,0x99},
  150.  {0x66,0x00,0x99}, {0x66,0x00,0x99},
  151.  {0x66,0x00,0x99}, {0x66,0x00,0x99},
  152.  {0x55,0x00,0xAA}, {0x55,0x00,0xAA},
  153.  {0x55,0x00,0xAA}, {0x55,0x00,0xAA},
  154.  {0x55,0x00,0xAA}, {0x55,0x00,0xAA},
  155.  {0x44,0x00,0xBB}, {0x44,0x00,0xBB},
  156.  {0x44,0x00,0xBB}, {0x44,0x00,0xBB},
  157.  {0x44,0x00,0xBB}, {0x33,0x00,0xCC},
  158.  {0x33,0x00,0xCC}, {0x33,0x00,0xCC},
  159.  {0x33,0x00,0xCC}, {0x33,0x00,0xCC},
  160.  {0x22,0x00,0xCC}, {0x22,0x00,0xDD},
  161.  {0x22,0x00,0xDD}, {0x22,0x00,0xDD},
  162.  {0x22,0x00,0xDD}, {0x22,0x00,0xDD},
  163.  {0x11,0x00,0xEE}, {0x11,0x00,0xEE},
  164.  {0x11,0x00,0xEE}, {0x11,0x00,0xEE},
  165.  {0x11,0x00,0xEE}, {0x00,0x00,0xFF},
  166.  {0x00,0x00,0xFF}, {0x00,0x00,0xFF},
  167.  {0x00,0x00,0xFF}, {0x00,0x00,0xFF}
  168.  };
  169.  
  170. UBYTE clouds_cmap32[256][3] = {
  171.  {0x00,0x00,0x00}, {0xEE,0xEE,0xFF},
  172.  {0xEE,0xEE,0xFF}, {0xEE,0xFF,0xFF},
  173.  {0xEE,0xFF,0xFF}, {0xEE,0xFF,0xFF},
  174.  {0xEE,0xFF,0xFF}, {0xFF,0xFF,0xFF},
  175.  {0xFF,0xFF,0xFF}, {0xFF,0xFF,0xFF},
  176.  {0xFF,0xFF,0xFF}, {0xFF,0xFF,0xFF},
  177.  {0xFF,0xFF,0xFF}, {0xFF,0xFF,0xFF},
  178.  {0xFF,0xFF,0xFF}, {0xFF,0xFF,0xFF},
  179.  {0xFF,0xFF,0xFF}, {0xFF,0xFF,0xFF},
  180.  {0xFF,0xFF,0xFF}, {0xEE,0xFF,0xFF},
  181.  {0xEE,0xFF,0xFF}, {0xEE,0xFF,0xFF},
  182.  {0xEE,0xFF,0xFF}, {0xEE,0xFF,0xFF},
  183.  {0xEE,0xFF,0xFF}, {0xEE,0xFF,0xFF},
  184.  {0xDD,0xEE,0xFF}, {0xDD,0xEE,0xFF},
  185.  {0xDD,0xEE,0xFF}, {0xDD,0xEE,0xFF},
  186.  {0xDD,0xEE,0xFF}, {0xDD,0xEE,0xFF},
  187.  {0xDD,0xEE,0xFF}, {0xDD,0xEE,0xFF},
  188.  {0xCC,0xEE,0xFF}, {0xCC,0xEE,0xFF},
  189.  {0xCC,0xEE,0xFF}, {0xCC,0xEE,0xFF},
  190.  {0xCC,0xEE,0xFF}, {0xCC,0xEE,0xFF},
  191.  {0xCC,0xDD,0xFF}, {0xBB,0xDD,0xFF},
  192.  {0xBB,0xDD,0xFF}, {0xBB,0xDD,0xFF},
  193.  {0xBB,0xDD,0xFF}, {0xBB,0xDD,0xFF},
  194.  {0xBB,0xDD,0xFF}, {0xBB,0xDD,0xFF},
  195.  {0xBB,0xDD,0xFF}, {0xAA,0xDD,0xFF},
  196.  {0xAA,0xDD,0xFF}, {0xAA,0xDD,0xFF},
  197.  {0xAA,0xDD,0xFF}, {0xAA,0xDD,0xFF},
  198.  {0xAA,0xCC,0xFF}, {0xAA,0xCC,0xFF},
  199.  {0x99,0xCC,0xFF}, {0x99,0xCC,0xFF},
  200.  {0x99,0xCC,0xFF}, {0x99,0xCC,0xFF},
  201.  {0x99,0xCC,0xFF}, {0x99,0xCC,0xFF},
  202.  {0x99,0xCC,0xFF}, {0x99,0xCC,0xFF},
  203.  {0x88,0xCC,0xFF}, {0x88,0xCC,0xFF},
  204.  {0x88,0xCC,0xFF}, {0x88,0xCC,0xFF},
  205.  {0x88,0xCC,0xFF}, {0x88,0xBB,0xFF},
  206.  {0x88,0xBB,0xFF}, {0x77,0xBB,0xFF},
  207.  {0x77,0xBB,0xFF}, {0x77,0xBB,0xFF},
  208.  {0x77,0xBB,0xFF}, {0x77,0xBB,0xFF},
  209.  {0x77,0xBB,0xFF}, {0x77,0xBB,0xFF},
  210.  {0x77,0xBB,0xFF}, {0x66,0xBB,0xFF},
  211.  {0x66,0xBB,0xFF}, {0x66,0xBB,0xFF},
  212.  {0x66,0xBB,0xFF}, {0x66,0xAA,0xFF},
  213.  {0x66,0xAA,0xFF}, {0x66,0xAA,0xFF},
  214.  {0x55,0xAA,0xFF}, {0x55,0xAA,0xFF},
  215.  {0x55,0xAA,0xFF}, {0x55,0xAA,0xFF},
  216.  {0x55,0xAA,0xFF}, {0x55,0xAA,0xFF},
  217.  {0x55,0xAA,0xFF}, {0x55,0xAA,0xFF},
  218.  {0x44,0xAA,0xFF}, {0x44,0xAA,0xFF},
  219.  {0x44,0xAA,0xFF}, {0x44,0x99,0xFF},
  220.  {0x44,0x99,0xFF}, {0x44,0x99,0xFF},
  221.  {0x44,0x99,0xFF}, {0x33,0x99,0xFF},
  222.  {0x33,0x99,0xFF}, {0x33,0x99,0xFF},
  223.  {0x33,0x99,0xFF}, {0x33,0x99,0xFF},
  224.  {0x33,0x99,0xFF}, {0x33,0x99,0xFF},
  225.  {0x33,0x99,0xFF}, {0x22,0x99,0xFF},
  226.  {0x22,0x99,0xFF}, {0x22,0x99,0xFF},
  227.  {0x22,0x88,0xFF}, {0x22,0x88,0xFF},
  228.  {0x22,0x88,0xFF}, {0x22,0x88,0xFF},
  229.  {0x11,0x88,0xFF}, {0x11,0x88,0xFF},
  230.  {0x11,0x88,0xFF}, {0x11,0x88,0xFF},
  231.  {0x11,0x88,0xFF}, {0x11,0x88,0xFF},
  232.  {0x11,0x88,0xFF}, {0x11,0x88,0xFF},
  233.  {0x00,0x88,0xFF}, {0x00,0x88,0xFF},
  234.  {0x00,0x77,0xFF}, {0x00,0x77,0xFF},
  235.  {0x00,0x77,0xFF}, {0x00,0x77,0xFF},
  236.  {0x00,0x77,0xFF}, {0x00,0x77,0xFF},
  237.  {0x00,0x77,0xFF}, {0x00,0x77,0xFF},
  238.  {0x00,0x77,0xFF}, {0x00,0x77,0xFF},
  239.  {0x00,0x77,0xFF}, {0x00,0x77,0xFF},
  240.  {0x00,0x77,0xFF}, {0x00,0x77,0xFF},
  241.  {0x00,0x77,0xFF}, {0x00,0x77,0xFF},
  242.  {0x00,0x77,0xFF}, {0x00,0x77,0xFF},
  243.  {0x00,0x77,0xFF}, {0x00,0x77,0xFF},
  244.  {0x00,0x77,0xFF}, {0x00,0x77,0xFF},
  245.  {0x00,0x77,0xFF}, {0x00,0x77,0xFF},
  246.  {0x00,0x77,0xFF}, {0x00,0x77,0xFF},
  247.  {0x00,0x77,0xFF}, {0x00,0x77,0xFF},
  248.  {0x00,0x77,0xFF}, {0x00,0x77,0xFF},
  249.  {0x00,0x77,0xFF}, {0x00,0x77,0xFF},
  250.  {0x00,0x77,0xFF}, {0x00,0x77,0xFF},
  251.  {0x00,0x77,0xFF}, {0x00,0x77,0xFF},
  252.  {0x00,0x77,0xFF}, {0x00,0x77,0xFF},
  253.  {0x00,0x77,0xFF}, {0x00,0x77,0xFF},
  254.  {0x00,0x77,0xFF}, {0x00,0x77,0xFF},
  255.  {0x00,0x77,0xFF}, {0x00,0x77,0xFF},
  256.  {0x00,0x77,0xFF}, {0x00,0x77,0xFF},
  257.  {0x00,0x77,0xFF}, {0x00,0x77,0xFF},
  258.  {0x00,0x77,0xFF}, {0x00,0x77,0xFF},
  259.  {0x00,0x77,0xFF}, {0x00,0x77,0xFF},
  260.  {0x00,0x77,0xFF}, {0x00,0x77,0xFF},
  261.  {0x00,0x77,0xFF}, {0x11,0x88,0xFF},
  262.  {0x11,0x88,0xFF}, {0x11,0x88,0xFF},
  263.  {0x11,0x88,0xFF}, {0x11,0x88,0xFF},
  264.  {0x11,0x88,0xFF}, {0x22,0x88,0xFF},
  265.  {0x22,0x88,0xFF}, {0x22,0x88,0xFF},
  266.  {0x22,0x88,0xFF}, {0x22,0x88,0xFF},
  267.  {0x22,0x99,0xFF}, {0x33,0x99,0xFF},
  268.  {0x33,0x99,0xFF}, {0x33,0x99,0xFF},
  269.  {0x33,0x99,0xFF}, {0x33,0x99,0xFF},
  270.  {0x33,0x99,0xFF}, {0x44,0x99,0xFF},
  271.  {0x44,0x99,0xFF}, {0x44,0x99,0xFF},
  272.  {0x44,0x99,0xFF}, {0x44,0xAA,0xFF},
  273.  {0x55,0xAA,0xFF}, {0x55,0xAA,0xFF},
  274.  {0x55,0xAA,0xFF}, {0x55,0xAA,0xFF},
  275.  {0x55,0xAA,0xFF}, {0x55,0xAA,0xFF},
  276.  {0x66,0xAA,0xFF}, {0x66,0xAA,0xFF},
  277.  {0x66,0xAA,0xFF}, {0x66,0xAA,0xFF},
  278.  {0x66,0xBB,0xFF}, {0x66,0xBB,0xFF},
  279.  {0x77,0xBB,0xFF}, {0x77,0xBB,0xFF},
  280.  {0x77,0xBB,0xFF}, {0x77,0xBB,0xFF},
  281.  {0x77,0xBB,0xFF}, {0x77,0xBB,0xFF},
  282.  {0x88,0xBB,0xFF}, {0x88,0xBB,0xFF},
  283.  {0x88,0xBB,0xFF}, {0x88,0xCC,0xFF},
  284.  {0x88,0xCC,0xFF}, {0x99,0xCC,0xFF},
  285.  {0x99,0xCC,0xFF}, {0x99,0xCC,0xFF},
  286.  {0x99,0xCC,0xFF}, {0x99,0xCC,0xFF},
  287.  {0x99,0xCC,0xFF}, {0xAA,0xCC,0xFF},
  288.  {0xAA,0xCC,0xFF}, {0xAA,0xCC,0xFF},
  289.  {0xAA,0xDD,0xFF}, {0xAA,0xDD,0xFF},
  290.  {0xAA,0xDD,0xFF}, {0xBB,0xDD,0xFF},
  291.  {0xBB,0xDD,0xFF}, {0xBB,0xDD,0xFF},
  292.  {0xBB,0xDD,0xFF}, {0xBB,0xDD,0xFF},
  293.  {0xBB,0xDD,0xFF}, {0xCC,0xDD,0xFF},
  294.  {0xCC,0xDD,0xFF}, {0xCC,0xEE,0xFF},
  295.  {0xCC,0xEE,0xFF}, {0xCC,0xEE,0xFF},
  296.  {0xCC,0xEE,0xFF}, {0xDD,0xEE,0xFF},
  297.  {0xDD,0xEE,0xFF}, {0xDD,0xEE,0xFF},
  298.  {0xDD,0xEE,0xFF}, {0xDD,0xEE,0xFF}
  299.  };
  300.  
  301. UBYTE explosion_cmap32[256][3] = {
  302.  {0x00,0x00,0x00}, {0x33,0x33,0x33},
  303.  {0x44,0x33,0x33}, {0x44,0x33,0x33},
  304.  {0x44,0x33,0x33}, {0x55,0x33,0x33},
  305.  {0x55,0x33,0x33}, {0x66,0x33,0x33},
  306.  {0x66,0x33,0x33}, {0x66,0x33,0x33},
  307.  {0x77,0x22,0x22}, {0x77,0x22,0x22},
  308.  {0x88,0x22,0x22}, {0x88,0x22,0x22},
  309.  {0x88,0x22,0x22}, {0x99,0x22,0x22},
  310.  {0x99,0x22,0x22}, {0x99,0x22,0x22},
  311.  {0xAA,0x11,0x11}, {0xAA,0x11,0x11},
  312.  {0xBB,0x11,0x11}, {0xBB,0x11,0x11},
  313.  {0xBB,0x11,0x11}, {0xCC,0x11,0x11},
  314.  {0xCC,0x11,0x11}, {0xDD,0x11,0x11},
  315.  {0xDD,0x00,0x00}, {0xDD,0x00,0x00},
  316.  {0xEE,0x00,0x00}, {0xEE,0x00,0x00},
  317.  {0xEE,0x00,0x00}, {0xFF,0x00,0x00},
  318.  {0xFF,0x00,0x00}, {0xFF,0x00,0x00},
  319.  {0xFF,0x00,0x00}, {0xFF,0x11,0x00},
  320.  {0xFF,0x11,0x00}, {0xFF,0x22,0x00},
  321.  {0xFF,0x22,0x00}, {0xFF,0x33,0x00},
  322.  {0xFF,0x33,0x00}, {0xFF,0x44,0x00},
  323.  {0xFF,0x44,0x00}, {0xFF,0x55,0x00},
  324.  {0xFF,0x55,0x00}, {0xFF,0x66,0x00},
  325.  {0xFF,0x66,0x00}, {0xFF,0x77,0x00},
  326.  {0xFF,0x77,0x00}, {0xFF,0x88,0x00},
  327.  {0xFF,0x88,0x00}, {0xFF,0x99,0x00},
  328.  {0xFF,0x99,0x00}, {0xFF,0xAA,0x00},
  329.  {0xFF,0xAA,0x00}, {0xFF,0xBB,0x00},
  330.  {0xFF,0xBB,0x00}, {0xFF,0xCC,0x00},
  331.  {0xFF,0xCC,0x00}, {0xFF,0xDD,0x00},
  332.  {0xFF,0xDD,0x00}, {0xFF,0xEE,0x00},
  333.  {0xFF,0xEE,0x00}, {0xFF,0xFF,0x00},
  334.  {0xFF,0xFF,0x00}, {0xFF,0xFF,0x00},
  335.  {0xFF,0xFF,0x00}, {0xFF,0xFF,0x11},
  336.  {0xFF,0xFF,0x11}, {0xFF,0xFF,0x22},
  337.  {0xFF,0xFF,0x22}, {0xFF,0xFF,0x33},
  338.  {0xFF,0xFF,0x33}, {0xFF,0xFF,0x44},
  339.  {0xFF,0xFF,0x44}, {0xFF,0xFF,0x55},
  340.  {0xFF,0xFF,0x55}, {0xFF,0xFF,0x66},
  341.  {0xFF,0xFF,0x66}, {0xFF,0xFF,0x77},
  342.  {0xFF,0xFF,0x77}, {0xFF,0xFF,0x88},
  343.  {0xFF,0xFF,0x88}, {0xFF,0xFF,0x99},
  344.  {0xFF,0xFF,0x99}, {0xFF,0xFF,0xAA},
  345.  {0xFF,0xFF,0xAA}, {0xFF,0xFF,0xBB},
  346.  {0xFF,0xFF,0xBB}, {0xFF,0xFF,0xCC},
  347.  {0xFF,0xFF,0xCC}, {0xFF,0xFF,0xDD},
  348.  {0xFF,0xFF,0xDD}, {0xFF,0xFF,0xEE},
  349.  {0xFF,0xFF,0xEE}, {0xFF,0xFF,0xFF},
  350.  {0xFF,0xFF,0xFF}, {0xFF,0xFF,0xFF},
  351.  {0xFF,0xFF,0xFF}, {0xFF,0xFF,0xFF},
  352.  {0xFF,0xFF,0xFF}, {0xFF,0xFF,0xEE},
  353.  {0xFF,0xFF,0xEE}, {0xFF,0xFF,0xEE},
  354.  {0xFF,0xEE,0xEE}, {0xFF,0xEE,0xDD},
  355.  {0xFF,0xEE,0xDD}, {0xFF,0xEE,0xDD},
  356.  {0xFF,0xEE,0xDD}, {0xFF,0xEE,0xCC},
  357.  {0xFF,0xEE,0xCC}, {0xFF,0xEE,0xCC},
  358.  {0xFF,0xDD,0xCC}, {0xFF,0xDD,0xBB},
  359.  {0xFF,0xDD,0xBB}, {0xFF,0xDD,0xBB},
  360.  {0xFF,0xDD,0xBB}, {0xFF,0xDD,0xAA},
  361.  {0xFF,0xDD,0xAA}, {0xFF,0xDD,0xAA},
  362.  {0xFF,0xCC,0xAA}, {0xFF,0xCC,0x99},
  363.  {0xFF,0xCC,0x99}, {0xFF,0xCC,0x99},
  364.  {0xFF,0xCC,0x99}, {0xFF,0xCC,0x88},
  365.  {0xFF,0xCC,0x88}, {0xFF,0xCC,0x88},
  366.  {0xFF,0xBB,0x88}, {0xFF,0xBB,0x77},
  367.  {0xFF,0xBB,0x77}, {0xFF,0xBB,0x77},
  368.  {0xFF,0xBB,0x77}, {0xFF,0xBB,0x66},
  369.  {0xFF,0xBB,0x66}, {0xFF,0xAA,0x66},
  370.  {0xFF,0xAA,0x66}, {0xFF,0xAA,0x55},
  371.  {0xFF,0xAA,0x55}, {0xFF,0xAA,0x55},
  372.  {0xFF,0xAA,0x55}, {0xFF,0xAA,0x44},
  373.  {0xFF,0xAA,0x44}, {0xFF,0x99,0x44},
  374.  {0xFF,0x99,0x44}, {0xFF,0x99,0x33},
  375.  {0xFF,0x99,0x33}, {0xFF,0x99,0x33},
  376.  {0xFF,0x99,0x33}, {0xFF,0x99,0x22},
  377.  {0xFF,0x99,0x22}, {0xFF,0x88,0x22},
  378.  {0xFF,0x88,0x22}, {0xFF,0x88,0x11},
  379.  {0xFF,0x88,0x11}, {0xFF,0x88,0x11},
  380.  {0xFF,0x88,0x11}, {0xFF,0x88,0x00},
  381.  {0xFF,0x88,0x00}, {0xFF,0x77,0x00},
  382.  {0xFF,0x77,0x00}, {0xFF,0x77,0x00},
  383.  {0xFF,0x77,0x00}, {0xFF,0x77,0x00},
  384.  {0xFF,0x66,0x00}, {0xFF,0x66,0x00},
  385.  {0xFF,0x66,0x00}, {0xFF,0x66,0x00},
  386.  {0xFF,0x55,0x00}, {0xFF,0x55,0x00},
  387.  {0xFF,0x55,0x00}, {0xFF,0x55,0x00},
  388.  {0xFF,0x44,0x00}, {0xFF,0x44,0x00},
  389.  {0xFF,0x44,0x00}, {0xFF,0x44,0x00},
  390.  {0xFF,0x33,0x00}, {0xFF,0x33,0x00},
  391.  {0xFF,0x33,0x00}, {0xFF,0x33,0x00},
  392.  {0xFF,0x33,0x00}, {0xFF,0x22,0x00},
  393.  {0xFF,0x22,0x00}, {0xFF,0x22,0x00},
  394.  {0xFF,0x22,0x00}, {0xFF,0x11,0x00},
  395.  {0xFF,0x11,0x00}, {0xFF,0x11,0x00},
  396.  {0xFF,0x11,0x00}, {0xFF,0x00,0x00},
  397.  {0xFF,0x00,0x00}, {0xFF,0x00,0x00},
  398.  {0xFF,0x00,0x00}, {0xFF,0x00,0x00},
  399.  {0xFF,0x00,0x00}, {0xFF,0x00,0x00},
  400.  {0xFF,0x00,0x00}, {0xFF,0x00,0x00},
  401.  {0xEE,0x00,0x00}, {0xEE,0x00,0x00},
  402.  {0xEE,0x00,0x00}, {0xEE,0x00,0x00},
  403.  {0xEE,0x00,0x00}, {0xEE,0x00,0x00},
  404.  {0xDD,0x00,0x00}, {0xDD,0x00,0x00},
  405.  {0xDD,0x00,0x00}, {0xDD,0x00,0x00},
  406.  {0xDD,0x00,0x00}, {0xCC,0x00,0x00},
  407.  {0xCC,0x00,0x00}, {0xCC,0x00,0x00},
  408.  {0xCC,0x00,0x00}, {0xCC,0x00,0x00},
  409.  {0xCC,0x00,0x00}, {0xBB,0x00,0x00},
  410.  {0xBB,0x00,0x00}, {0xBB,0x00,0x00},
  411.  {0xBB,0x00,0x00}, {0xBB,0x00,0x00},
  412.  {0xAA,0x00,0x00}, {0xAA,0x00,0x00},
  413.  {0xAA,0x00,0x00}, {0xAA,0x00,0x00},
  414.  {0xAA,0x00,0x00}, {0xAA,0x00,0x00},
  415.  {0x99,0x00,0x00}, {0x99,0x00,0x00},
  416.  {0x99,0x00,0x00}, {0x99,0x00,0x00},
  417.  {0x88,0x00,0x00}, {0x88,0x00,0x00},
  418.  {0x88,0x11,0x11}, {0x88,0x11,0x11},
  419.  {0x88,0x11,0x11}, {0x77,0x11,0x11},
  420.  {0x77,0x11,0x11}, {0x77,0x11,0x11},
  421.  {0x77,0x11,0x11}, {0x77,0x11,0x11},
  422.  {0x66,0x22,0x22}, {0x66,0x22,0x22},
  423.  {0x66,0x22,0x22}, {0x66,0x22,0x22},
  424.  {0x66,0x22,0x22}, {0x55,0x22,0x22},
  425.  {0x55,0x22,0x22}, {0x55,0x22,0x22},
  426.  {0x55,0x33,0x33}, {0x55,0x33,0x33},
  427.  {0x44,0x33,0x33}, {0x44,0x33,0x33},
  428.  {0x44,0x33,0x33}, {0x44,0x33,0x33},
  429.  {0x33,0x33,0x33}, {0x33,0x33,0x33}
  430.  };
  431.  
  432. UBYTE terraform_cmap32[256][3] = {
  433.  {0x00,0x00,0x00}, {0xFF,0xFF,0xFF},
  434.  {0xFF,0xEE,0xEE}, {0xFF,0xDD,0xCC},
  435.  {0xFF,0xCC,0xAA}, {0xEE,0xBB,0x88},
  436.  {0xEE,0xBB,0x77}, {0xEE,0xAA,0x55},
  437.  {0xEE,0x99,0x33}, {0xDD,0x88,0x22},
  438.  {0xDD,0x88,0x22}, {0xDD,0x88,0x22},
  439.  {0xCC,0x88,0x11}, {0xCC,0x88,0x11},
  440.  {0xCC,0x88,0x11}, {0xCC,0x88,0x11},
  441.  {0xBB,0x88,0x11}, {0xBB,0x88,0x11},
  442.  {0xBB,0x88,0x11}, {0xAA,0x88,0x11},
  443.  {0xAA,0x88,0x11}, {0xAA,0x88,0x11},
  444.  {0xAA,0x88,0x11}, {0x99,0x88,0x11},
  445.  {0x99,0x88,0x11}, {0x99,0x88,0x11},
  446.  {0x88,0x77,0x11}, {0x88,0x77,0x11},
  447.  {0x88,0x88,0x11}, {0x88,0x88,0x11},
  448.  {0x88,0x88,0x11}, {0x88,0x88,0x11},
  449.  {0x88,0x99,0x22}, {0x88,0x99,0x22},
  450.  {0x88,0x99,0x22}, {0x88,0x99,0x22},
  451.  {0x88,0x99,0x22}, {0x88,0xAA,0x33},
  452.  {0x88,0xAA,0x33}, {0x88,0xAA,0x33},
  453.  {0x88,0xAA,0x33}, {0x77,0xAA,0x33},
  454.  {0x77,0xBB,0x44}, {0x77,0xBB,0x44},
  455.  {0x66,0x99,0x55}, {0x55,0x88,0x66},
  456.  {0x44,0x66,0x77}, {0x33,0x44,0x88},
  457.  {0x22,0x33,0x99}, {0x11,0x11,0xAA},
  458.  {0x00,0x00,0xAA}, {0x00,0x00,0xBB},
  459.  {0x00,0x00,0xBB}, {0x00,0x00,0xBB},
  460.  {0x00,0x00,0xBB}, {0x00,0x11,0xBB},
  461.  {0x00,0x11,0xBB}, {0x00,0x11,0xBB},
  462.  {0x00,0x11,0xBB}, {0x00,0x22,0xBB},
  463.  {0x00,0x22,0xBB}, {0x00,0x22,0xBB},
  464.  {0x11,0x22,0xBB}, {0x11,0x33,0xCC},
  465.  {0x11,0x33,0xCC}, {0x11,0x33,0xCC},
  466.  {0x11,0x33,0xCC}, {0x11,0x44,0xCC},
  467.  {0x11,0x44,0xCC}, {0x11,0x44,0xCC},
  468.  {0x11,0x44,0xCC}, {0x11,0x55,0xCC},
  469.  {0x11,0x55,0xCC}, {0x11,0x55,0xCC},
  470.  {0x11,0x55,0xCC}, {0x22,0x55,0xDD},
  471.  {0x22,0x66,0xDD}, {0x22,0x66,0xDD},
  472.  {0x22,0x66,0xDD}, {0x22,0x66,0xDD},
  473.  {0x22,0x77,0xDD}, {0x22,0x77,0xDD},
  474.  {0x22,0x77,0xDD}, {0x22,0x77,0xDD},
  475.  {0x22,0x88,0xDD}, {0x22,0x88,0xDD},
  476.  {0x22,0x88,0xDD}, {0x33,0x88,0xEE},
  477.  {0x33,0x99,0xEE}, {0x33,0x99,0xEE},
  478.  {0x33,0x99,0xEE}, {0x33,0x99,0xEE},
  479.  {0x33,0xAA,0xEE}, {0x33,0xAA,0xEE},
  480.  {0x33,0xAA,0xEE}, {0x33,0xAA,0xEE},
  481.  {0x44,0xAA,0xBB}, {0x44,0xAA,0x88},
  482.  {0x55,0xAA,0x55}, {0x55,0xAA,0x22},
  483.  {0x55,0xAA,0x33}, {0x55,0xAA,0x33},
  484.  {0x55,0xAA,0x33}, {0x55,0xAA,0x33},
  485.  {0x55,0xAA,0x33}, {0x66,0xAA,0x33},
  486.  {0x66,0xAA,0x33}, {0x66,0xAA,0x33},
  487.  {0x66,0xAA,0x33}, {0x66,0xBB,0x33},
  488.  {0x66,0xBB,0x33}, {0x66,0xBB,0x33},
  489.  {0x66,0xBB,0x33}, {0x66,0xBB,0x33},
  490.  {0x66,0xBB,0x33}, {0x77,0xBB,0x33},
  491.  {0x77,0xBB,0x33}, {0x77,0xBB,0x33},
  492.  {0x77,0xBB,0x33}, {0x77,0xBB,0x33},
  493.  {0x77,0xBB,0x33}, {0x77,0xBB,0x33},
  494.  {0x77,0xBB,0x33}, {0x77,0xBB,0x33},
  495.  {0x77,0xBB,0x33}, {0x88,0xBB,0x33},
  496.  {0x88,0xBB,0x33}, {0x88,0xBB,0x33},
  497.  {0x88,0xBB,0x33}, {0x88,0xBB,0x33},
  498.  {0x88,0xBB,0x33}, {0x88,0xBB,0x33},
  499.  {0x88,0xBB,0x33}, {0x88,0xBB,0x33},
  500.  {0x88,0xBB,0x33}, {0x99,0xBB,0x33},
  501.  {0x99,0xBB,0x33}, {0x99,0xBB,0x44},
  502.  {0x99,0xBB,0x44}, {0x99,0xCC,0x44},
  503.  {0x99,0xCC,0x44}, {0x99,0xCC,0x44},
  504.  {0x99,0xCC,0x44}, {0x99,0xCC,0x44},
  505.  {0x99,0xCC,0x44}, {0xAA,0xCC,0x44},
  506.  {0xAA,0xCC,0x44}, {0xAA,0xCC,0x44},
  507.  {0xAA,0xCC,0x44}, {0xAA,0xCC,0x44},
  508.  {0xAA,0xCC,0x44}, {0xAA,0xCC,0x44},
  509.  {0xAA,0xCC,0x44}, {0xAA,0xCC,0x44},
  510.  {0xAA,0xCC,0x44}, {0xAA,0xCC,0x44},
  511.  {0xBB,0xCC,0x44}, {0xBB,0xCC,0x44},
  512.  {0xBB,0xCC,0x44}, {0xBB,0xCC,0x44},
  513.  {0xBB,0xCC,0x44}, {0xBB,0xCC,0x44},
  514.  {0xBB,0xCC,0x44}, {0xBB,0xCC,0x44},
  515.  {0xBB,0xCC,0x44}, {0xBB,0xCC,0x44},
  516.  {0xCC,0xCC,0x44}, {0xCC,0xCC,0x44},
  517.  {0xCC,0xDD,0x44}, {0xCC,0xDD,0x44},
  518.  {0xCC,0xDD,0x44}, {0xCC,0xDD,0x44},
  519.  {0xCC,0xDD,0x44}, {0xCC,0xDD,0x55},
  520.  {0xCC,0xDD,0x55}, {0xCC,0xDD,0x55},
  521.  {0xDD,0xDD,0x55}, {0xDD,0xDD,0x55},
  522.  {0xDD,0xDD,0x55}, {0xDD,0xDD,0x55},
  523.  {0xDD,0xDD,0x55}, {0xDD,0xDD,0x55},
  524.  {0xDD,0xDD,0x55}, {0xDD,0xDD,0x55},
  525.  {0xDD,0xDD,0x55}, {0xDD,0xDD,0x55},
  526.  {0xEE,0xDD,0x55}, {0xEE,0xDD,0x55},
  527.  {0xEE,0xDD,0x55}, {0xEE,0xDD,0x55},
  528.  {0xEE,0xDD,0x55}, {0xEE,0xDD,0x55},
  529.  {0xEE,0xDD,0x55}, {0xEE,0xDD,0x55},
  530.  {0xEE,0xDD,0x55}, {0xEE,0xDD,0x44},
  531.  {0xEE,0xDD,0x44}, {0xEE,0xCC,0x44},
  532.  {0xEE,0xCC,0x44}, {0xEE,0xCC,0x44},
  533.  {0xEE,0xCC,0x44}, {0xEE,0xCC,0x44},
  534.  {0xEE,0xCC,0x44}, {0xEE,0xCC,0x33},
  535.  {0xEE,0xCC,0x33}, {0xEE,0xCC,0x33},
  536.  {0xEE,0xBB,0x33}, {0xEE,0xBB,0x33},
  537.  {0xEE,0xBB,0x33}, {0xEE,0xBB,0x33},
  538.  {0xEE,0xBB,0x33}, {0xEE,0xBB,0x22},
  539.  {0xEE,0xBB,0x22}, {0xEE,0xBB,0x22},
  540.  {0xEE,0xBB,0x22}, {0xEE,0xBB,0x22},
  541.  {0xEE,0xBB,0x22}, {0xEE,0xAA,0x22},
  542.  {0xEE,0xAA,0x22}, {0xEE,0xAA,0x22},
  543.  {0xEE,0xAA,0x22}, {0xEE,0xAA,0x22},
  544.  {0xEE,0xAA,0x22}, {0xEE,0xAA,0x22},
  545.  {0xEE,0xAA,0x22}, {0xEE,0x99,0x11},
  546.  {0xEE,0x99,0x11}, {0xEE,0x99,0x11},
  547.  {0xEE,0x99,0x11}, {0xDD,0x99,0x11},
  548.  {0xDD,0x88,0x11}, {0xDD,0x88,0x11},
  549.  {0xDD,0x88,0x11}, {0xDD,0x88,0x11},
  550.  {0xDD,0x77,0x00}, {0xDD,0x77,0x00},
  551.  {0xDD,0x77,0x00}, {0xDD,0x77,0x11},
  552.  {0xDD,0x88,0x22}, {0xDD,0x88,0x22},
  553.  {0xEE,0x99,0x33}, {0xEE,0x99,0x44},
  554.  {0xEE,0x99,0x55}, {0xEE,0xAA,0x66},
  555.  {0xEE,0xAA,0x66}, {0xEE,0xBB,0x77},
  556.  {0xEE,0xBB,0x88}, {0xEE,0xCC,0x99},
  557.  {0xEE,0xCC,0xAA}, {0xFF,0xDD,0xAA},
  558.  {0xFF,0xDD,0xBB}, {0xFF,0xDD,0xCC},
  559.  {0xFF,0xEE,0xDD}, {0xFF,0xEE,0xEE},
  560.  {0xFF,0xFF,0xEE}, {0xFF,0xFF,0xFF}
  561.  };
  562.  
  563. UBYTE sea_cmap32[256][3] = {
  564.  {0x00,0x00,0x00}, {0x00,0x99,0xDD},
  565.  {0x00,0x99,0xDD}, {0x00,0x99,0xDD},
  566.  {0x00,0x99,0xDD}, {0x00,0x99,0xDD},
  567.  {0x00,0x99,0xDD}, {0x00,0x99,0xDD},
  568.  {0x00,0x99,0xDD}, {0x00,0x99,0xEE},
  569.  {0x00,0xAA,0xEE}, {0x00,0xAA,0xEE},
  570.  {0x00,0xAA,0xEE}, {0x00,0xAA,0xEE},
  571.  {0x00,0xAA,0xEE}, {0x22,0xBB,0xCC},
  572.  {0x44,0xBB,0xAA}, {0x66,0xCC,0x88},
  573.  {0x99,0xDD,0x66}, {0xBB,0xEE,0x44},
  574.  {0xDD,0xFF,0x22}, {0xFF,0xFF,0x00},
  575.  {0xFF,0xFF,0x00}, {0xEE,0xEE,0x00},
  576.  {0xDD,0xDD,0x00}, {0xDD,0xDD,0x00},
  577.  {0xCC,0xCC,0x00}, {0xCC,0xCC,0x00},
  578.  {0xBB,0xBB,0x00}, {0xAA,0xAA,0x00},
  579.  {0xAA,0xAA,0x00}, {0x99,0x99,0x00},
  580.  {0x88,0x88,0x00}, {0x88,0x88,0x00},
  581.  {0x77,0x77,0x00}, {0x77,0x77,0x00},
  582.  {0x66,0x66,0x00}, {0x55,0x55,0x00},
  583.  {0x55,0x55,0x00}, {0x44,0x44,0x00},
  584.  {0x33,0x33,0x00}, {0x33,0x33,0x00},
  585.  {0x22,0x22,0x00}, {0x22,0x22,0x00},
  586.  {0x11,0x11,0x00}, {0x00,0x00,0x00},
  587.  {0x00,0x00,0x00}, {0x11,0x11,0x00},
  588.  {0x22,0x22,0x00}, {0x33,0x33,0x00},
  589.  {0x44,0x44,0x00}, {0x55,0x55,0x00},
  590.  {0x66,0x66,0x00}, {0x77,0x77,0x00},
  591.  {0x88,0x88,0x00}, {0x88,0x88,0x00},
  592.  {0x99,0x99,0x00}, {0xAA,0xAA,0x00},
  593.  {0xBB,0xBB,0x00}, {0xCC,0xCC,0x00},
  594.  {0xDD,0xDD,0x00}, {0xEE,0xEE,0x00},
  595.  {0xFF,0xFF,0x00}, {0xFF,0xFF,0x00},
  596.  {0xEE,0xEE,0x00}, {0xDD,0xDD,0x00},
  597.  {0xDD,0xDD,0x00}, {0xCC,0xCC,0x00},
  598.  {0xBB,0xBB,0x00}, {0xBB,0xBB,0x00},
  599.  {0xAA,0xAA,0x00}, {0x99,0x99,0x00},
  600.  {0x99,0x99,0x00}, {0x88,0x88,0x00},
  601.  {0x77,0x77,0x00}, {0x77,0x77,0x00},
  602.  {0x66,0x66,0x00}, {0x55,0x55,0x00},
  603.  {0x44,0x44,0x00}, {0x44,0x44,0x00},
  604.  {0x33,0x33,0x00}, {0x22,0x22,0x00},
  605.  {0x22,0x22,0x00}, {0x11,0x11,0x00},
  606.  {0x00,0x00,0x00}, {0x00,0x00,0x00},
  607.  {0x00,0x00,0x00}, {0x00,0x00,0x00},
  608.  {0x00,0x00,0x00}, {0x00,0x00,0x00},
  609.  {0x00,0x00,0x00}, {0x11,0x11,0x11},
  610.  {0x11,0x11,0x11}, {0x11,0x11,0x11},
  611.  {0x11,0x11,0x11}, {0x11,0x11,0x11},
  612.  {0x11,0x11,0x11}, {0x22,0x22,0x22},
  613.  {0x22,0x22,0x22}, {0x22,0x22,0x22},
  614.  {0x22,0x22,0x22}, {0x22,0x22,0x22},
  615.  {0x33,0x33,0x33}, {0x33,0x33,0x33},
  616.  {0x33,0x33,0x33}, {0x33,0x33,0x33},
  617.  {0x33,0x33,0x33}, {0x33,0x33,0x33},
  618.  {0x44,0x44,0x44}, {0x44,0x44,0x44},
  619.  {0x44,0x44,0x44}, {0x44,0x44,0x44},
  620.  {0x44,0x44,0x44}, {0x55,0x55,0x55},
  621.  {0x55,0x55,0x55}, {0x55,0x55,0x55},
  622.  {0x55,0x55,0x55}, {0x55,0x55,0x55},
  623.  {0x55,0x55,0x55}, {0x66,0x66,0x66},
  624.  {0x66,0x66,0x66}, {0x66,0x66,0x66},
  625.  {0x66,0x66,0x66}, {0x66,0x66,0x66},
  626.  {0x77,0x77,0x77}, {0x77,0x77,0x77},
  627.  {0x77,0x77,0x77}, {0x77,0x77,0x77},
  628.  {0x77,0x77,0x77}, {0x77,0x77,0x77},
  629.  {0x88,0x88,0x88}, {0x88,0x88,0x88},
  630.  {0x88,0x88,0x88}, {0x88,0x88,0x88},
  631.  {0x88,0x88,0x88}, {0x88,0x88,0x88},
  632.  {0x99,0x99,0x99}, {0x99,0x99,0x99},
  633.  {0x99,0x99,0x99}, {0x99,0x99,0x99},
  634.  {0x99,0x99,0x99}, {0xAA,0xAA,0xAA},
  635.  {0xAA,0xAA,0xAA}, {0xAA,0xAA,0xAA},
  636.  {0xAA,0xAA,0xAA}, {0xAA,0xAA,0xAA},
  637.  {0xAA,0xAA,0xAA}, {0xBB,0xBB,0xBB},
  638.  {0xBB,0xBB,0xBB}, {0xBB,0xBB,0xBB},
  639.  {0xBB,0xBB,0xBB}, {0xBB,0xBB,0xBB},
  640.  {0xCC,0xCC,0xCC}, {0xCC,0xCC,0xCC},
  641.  {0xCC,0xCC,0xCC}, {0xCC,0xCC,0xCC},
  642.  {0xCC,0xCC,0xCC}, {0xCC,0xCC,0xCC},
  643.  {0xDD,0xDD,0xDD}, {0xDD,0xDD,0xDD},
  644.  {0xDD,0xDD,0xDD}, {0xDD,0xDD,0xDD},
  645.  {0xDD,0xDD,0xDD}, {0xEE,0xEE,0xEE},
  646.  {0xEE,0xEE,0xEE}, {0xEE,0xEE,0xEE},
  647.  {0xEE,0xEE,0xEE}, {0xEE,0xEE,0xEE},
  648.  {0xEE,0xEE,0xEE}, {0xFF,0xFF,0xFF},
  649.  {0xFF,0xFF,0xFF}, {0xFF,0xFF,0xFF},
  650.  {0xFF,0xFF,0xFF}, {0xFF,0xFF,0xFF},
  651.  {0x00,0x11,0x22}, {0x00,0x11,0x22},
  652.  {0x00,0x22,0x33}, {0x00,0x22,0x33},
  653.  {0x00,0x22,0x33}, {0x00,0x22,0x33},
  654.  {0x00,0x22,0x33}, {0x00,0x22,0x33},
  655.  {0x00,0x22,0x33}, {0x00,0x22,0x33},
  656.  {0x00,0x22,0x44}, {0x00,0x22,0x44},
  657.  {0x00,0x22,0x44}, {0x00,0x33,0x44},
  658.  {0x00,0x33,0x44}, {0x00,0x33,0x44},
  659.  {0x00,0x33,0x44}, {0x00,0x33,0x44},
  660.  {0x00,0x33,0x55}, {0x00,0x33,0x55},
  661.  {0x00,0x33,0x55}, {0x00,0x33,0x55},
  662.  {0x00,0x33,0x55}, {0x00,0x33,0x55},
  663.  {0x00,0x44,0x55}, {0x00,0x44,0x55},
  664.  {0x00,0x44,0x66}, {0x00,0x44,0x66},
  665.  {0x00,0x44,0x66}, {0x00,0x44,0x66},
  666.  {0x00,0x44,0x66}, {0x00,0x44,0x66},
  667.  {0x00,0x44,0x66}, {0x00,0x44,0x66},
  668.  {0x00,0x44,0x77}, {0x00,0x55,0x77},
  669.  {0x00,0x55,0x77}, {0x00,0x55,0x77},
  670.  {0x00,0x55,0x77}, {0x00,0x55,0x77},
  671.  {0x00,0x55,0x77}, {0x00,0x55,0x77},
  672.  {0x00,0x55,0x88}, {0x00,0x55,0x88},
  673.  {0x00,0x55,0x88}, {0x00,0x55,0x88},
  674.  {0x00,0x55,0x88}, {0x00,0x66,0x88},
  675.  {0x00,0x66,0x88}, {0x00,0x66,0x88},
  676.  {0x00,0x66,0x99}, {0x00,0x66,0x99},
  677.  {0x00,0x66,0x99}, {0x00,0x66,0x99},
  678.  {0x00,0x66,0x99}, {0x00,0x66,0x99},
  679.  {0x00,0x66,0x99}, {0x00,0x66,0x99},
  680.  {0x00,0x77,0xAA}, {0x00,0x77,0xAA},
  681.  {0x00,0x77,0xAA}, {0x00,0x77,0xAA},
  682.  {0x00,0x77,0xAA}, {0x00,0x77,0xAA},
  683.  {0x00,0x77,0xAA}, {0x00,0x77,0xAA},
  684.  {0x00,0x77,0xBB}, {0x00,0x77,0xBB},
  685.  {0x00,0x77,0xBB}, {0x00,0x88,0xBB},
  686.  {0x00,0x88,0xBB}, {0x00,0x88,0xBB},
  687.  {0x00,0x88,0xBB}, {0x00,0x88,0xBB},
  688.  {0x00,0x88,0xCC}, {0x00,0x88,0xCC},
  689.  {0x00,0x88,0xCC}, {0x00,0x88,0xCC},
  690.  {0x00,0x88,0xCC}, {0x00,0x88,0xCC},
  691.  {0x00,0x99,0xCC}, {0x00,0x99,0xCC}
  692.  };
  693.  
  694. #define Plot(x,y,c)     { SetAPen( rp,c ); WritePixel( rp,x,y ); }
  695. #define GetPixel(x,y)     ReadPixel( rp,x,y )
  696.  
  697. struct RastPort        *rp=NULL;
  698. struct BitMap        *bitmap=NULL;
  699. struct Screen *scr;
  700. ULONG cmap[256][3];
  701. BOOL aga = TRUE;
  702. UWORD maxcols = 64;
  703. UBYTE depth = 6;
  704.  
  705.  
  706. void ChooseAndSetPalette( UBYTE brightness )
  707. {
  708. int i;
  709. UBYTE (*tmap)[3];
  710.  
  711. switch( time( NULL ) % 5 )
  712.     {
  713.     case 0:
  714.             tmap = plasmastd_cmap32;
  715.             break;
  716.     case 1:
  717.             tmap = clouds_cmap32;
  718.             break;
  719.     case 2:
  720.             tmap = explosion_cmap32;
  721.             break;
  722.     case 3:
  723.             tmap = terraform_cmap32;
  724.             break;
  725.     case 4:
  726.             tmap = sea_cmap32;
  727.             break;
  728.     }
  729.  
  730. if ( aga )
  731.     for( i = 0; i < 256; i++ )
  732.         {
  733.         cmap[i][0] = ( tmap[i][0] * brightness / 100 ) << 24;
  734.         cmap[i][1] = ( tmap[i][1] * brightness / 100 ) << 24;
  735.         cmap[i][2] = ( tmap[i][2] * brightness / 100 ) << 24;
  736.         if ( i < 64 )
  737.             SetRGB32( &scr->ViewPort, i, cmap[i][0], cmap[i][1], cmap[i][2] );
  738.         }
  739. else
  740.     for( i = 0; i < 256; i++ )
  741.         {
  742.         cmap[i][0] = ( (tmap[i][0] >> 4) * brightness / 100 );
  743.         cmap[i][1] = ( (tmap[i][1] >> 4) * brightness / 100 );
  744.         cmap[i][2] = ( (tmap[i][2] >> 4) * brightness / 100 );
  745.         if ( i < 32 )
  746.             SetRGB4( &scr->ViewPort, i, cmap[i][0], cmap[i][1], cmap[i][2] );
  747.         }
  748. }
  749.  
  750.  
  751. void CyclePalette( void )
  752. {
  753. int i;
  754. UBYTE index = 0, curr_idx;
  755.  
  756. while( STILL_BLANKING )
  757.     {
  758.     WaitTOF();
  759.     for( i = 1; i < maxcols; i++ )
  760.         {
  761.         curr_idx = index + i;
  762.         if ( !curr_idx )
  763.             curr_idx = 1;
  764.         if ( aga )
  765.             SetRGB32( &scr->ViewPort, i, cmap[curr_idx][0], cmap[curr_idx][1], cmap[curr_idx][2] );
  766.         else
  767.             SetRGB4( &scr->ViewPort, i, cmap[curr_idx][0], cmap[curr_idx][1], cmap[curr_idx][2] );
  768.         }
  769.     index++;
  770.     if ( !index )
  771.         index = 1;
  772.     }
  773. }
  774.  
  775.  
  776. void New_Col( int xa, int ya, int x, int y, int xb, int yb, int color )
  777. {
  778. color = RangeRand( color << 1 ) - color;
  779. color += ( GetPixel( xa, ya ) + GetPixel( xb, yb ) + 1 ) >> 1;
  780. if ( color < 1 )
  781.     color = 1;
  782. else if ( color > maxcols - 1 )
  783.     color = maxcols - 1;
  784. if ( !GetPixel( x, y ) )
  785.     Plot( x, y, color );
  786. }
  787.  
  788.  
  789. BOOL cont = TRUE;
  790.  
  791. void Sub_Divide( int x1, int y1, int x2, int y2 )
  792. {
  793. register int x, y, color,diffx,diffy ;
  794.  
  795. if ( cont && (!STILL_BLANKING) )
  796.     cont = FALSE;
  797.  
  798. if( cont && !((x2-x1<2)&&(y2-y1<2)) )
  799.     {
  800.     x = ( x1 + x2 ) >> 1;
  801.     y = ( y1 + y2 ) >> 1;
  802.     diffx = ( x2 - x1 ) >> 1;
  803.     diffy = ( y2 - y1 ) >> 1;
  804.     color = diffx + diffy;
  805.     New_Col( x1, y1, x, y1, x2, y1, color );
  806.     New_Col( x2, y1, x2, y, x2, y2, color );
  807.     New_Col( x1, y2, x, y2, x2, y2, color );
  808.     New_Col( x1, y1, x1, y, x1, y2, color );
  809.     color = ( GetPixel( x1, y1 ) + GetPixel( x2, y1 ) +
  810.            GetPixel( x2, y2 ) + GetPixel( x1, y2 ) + 2 ) >> 2;
  811.     Plot( x, y, color );
  812.     Sub_Divide( x1, y1, x, y );
  813.     Sub_Divide( x, y1, x2, y );
  814.     Sub_Divide( x, y, x2, y2 );
  815.     Sub_Divide( x1, y, x, y2 );
  816.     }
  817. }
  818.  
  819.  
  820. void Plasma( void )
  821. {
  822. UWORD swidth, sheight;
  823. struct Rectangle *rect;
  824. UBYTE brightness;
  825. ULONG displayID;
  826.  
  827. rect = GETTXTOSCANRECT(dinfo);
  828.  
  829. swidth = RECTANGLEWIDTH(rect);
  830. sheight = RECTANGLEHEIGHT(rect);
  831. brightness = GETBRIGHTNESS(dinfo);
  832.  
  833. displayID = DISPLAYID(dinfo);
  834.  
  835. if ( !CheckAA() )
  836.     {
  837.     aga = FALSE;
  838.     maxcols = 32;
  839.     depth = 5;
  840.     if (displayID & SUPERHIRES)
  841.         {
  842.         displayID &= ~SUPERHIRES;
  843.         swidth >>= 2;
  844.         }
  845.     else if (displayID & HIRES)
  846.         {
  847.         displayID &= ~HIRES;
  848.         swidth >>= 1;
  849.         }
  850.     }
  851.  
  852. if ( scr = OpenScreenTags( NULL,
  853.     SA_DisplayID, displayID,
  854.     SA_Depth, depth,
  855.     SA_Width, swidth,
  856.     SA_Height, sheight,
  857.     SA_Quiet, TRUE,
  858.     TAG_END ) )
  859.     {
  860.     rp = &scr->RastPort;
  861.     bitmap = scr->RastPort.BitMap;
  862.  
  863.     SpritesOff();
  864.  
  865.     ChooseAndSetPalette( brightness );
  866.  
  867.     SetRast( &scr->RastPort, 0 );
  868.     Plot( 0, 0, RangeRand( maxcols - 2 ) + 1 );
  869.     Plot( swidth - 1, 0, RangeRand( maxcols - 2 ) + 1 );
  870.     Plot( swidth - 1, sheight - 1, RangeRand( maxcols - 2 ) + 1 );
  871.     Plot( 0, sheight - 1, RangeRand( maxcols - 2 ) + 1 );
  872.     Sub_Divide( 0, 0, swidth - 1, sheight - 1 );
  873.     if ( cont )
  874.         CyclePalette();
  875.  
  876.     CloseScreen( scr );
  877.     SpritesOn();
  878.     }
  879. else
  880.     SendClientMsg( ACTION_FAILED );
  881. }
  882.  
  883.  
  884. extern ULONG RangeSeed;
  885.  
  886. void __main( char *line )
  887. {
  888. if ( IntuitionBase = (struct IntuitionBase *)OpenLibrary( "intuition.library", 37L ) )
  889.     {
  890.     if ( GfxBase = (struct GfxBase *)OpenLibrary( "graphics.library", 37L ) )
  891.         {
  892.         if ( dinfo = OpenCommunication() )
  893.             {
  894.             RangeSeed = (ULONG)time( 0L );
  895.             Plasma();
  896.             CloseCommunication( dinfo );
  897.             }
  898.         CloseLibrary( (struct Library *)GfxBase );
  899.         }
  900.     CloseLibrary( (struct Library *)IntuitionBase );
  901.     }
  902. }
  903.